#!/bin/bash
# 
##定义了常用的字体效果及基础功能
##定义字体效果
#红色背景
red_bg='\e[41;33;1m'
#红色字体
red_zt='\e[1;31m'
#绿色背景
green_bg='\033[0;32;1m'
#绿色字体
green_zt='\e[1;32m'
#关闭效果
end='\033[0m'
#字体闪烁
ss='\033[05m'
#消隐
sy='\33[08m'
##常用语句定义区
#主要用于步骤开始前的信息展现
Entering(){
	echo -e "${green_bg}正在进入...${end}\n${red_zt}${1}...${end}"
}
#红色字体+绿色字体
red_z_green_z_info(){
	echo -e "${red_zt}${1}:${end}${green_zt}${2}${end}"
}
#检测是否输入
input_check(){
    #1参未需要设置的变量值[ $DB_PASS ]
    #2参为这个参数的备注信息[例如:数据库的root密码]
    #3参为一个随机/默认值,例如[ 000000 ]
    #4参为这个变量名,例如 [ DB_PASS ]
    if [[ -z "$1" ]];then
        echo -e "${red_zt}检测到${2}没有输入，已使用默认值[ ${3} ]${end}"
        eval `echo "$4=$3"`
    else
        eval `echo "$4=$1"`
    fi
}
#绿色字体
green_zt(){
	echo -e "${green_zt}${1}${end}"
}
#红色字体+绿色字体
red_z_green_z(){
	echo -e "${red_zt}${1}${end}${green_zt}${2}${end}${green_zt}${3}${end}"
}
#红色字体
red_z(){
	echo -e "${red_zt}${1}${end}"
}
#红色背景
red_bg(){
	echo -e "${red_bg}${1}${end}"
}
#红色字体+红色背景
red_zt_bg(){
	echo -e "${red_zt}${1}${end}${red_bg}${2}${end}"
}
#输入函数
input(){
	echo -e "${red_zt}${1}${end}"
	read $2
}

arch=`uname -m`
os_type=`cat /etc/os-release  | grep ^ID | sed 's/ID=//' | sed -n 1p`
work_dir=`pwd`
if [[ $UID == 0 ]];then
    green_zt '检测当前用户已是最高权限,跳过密码输入'
    cmds=''
else
    input "请输入当前系统密码,直接回车将使用默认密码:" passwds
    if [[ -z $passwds ]];then
        password='Gxxc@123'
    else
        password=$passwds
    fi
    echo $password | sudo -S echo '权限检验中...'
    if [[ $? -eq 0 ]];then
        green_zt "权限校验成功"
    else
        red_bg "权限校验失败,部分操作可能失败"
    fi
    cmds="sudo -S "
fi
red_z_green_z "当前系统类型：" "${os_type}"
red_z_green_z "当前系统架构：" "${arch}"
red_z_green_z "当前工作目录：" "${work_dir}"

main(){
    menu_all="[1]解决微信卡顿,二维码显示不全问题
[2]解决龙芯笔记本系统卡顿问题
[3]进行系统更新
[4]安装字体
[m]返回主菜单-main
[q]退出程序-quit"
    menu_kylin="[1]解决微信卡顿,二维码显示不全问题
[2]解决龙芯笔记本系统卡顿问题
[3]进行系统更新
[4]安装字体
[m]返回主菜单-main
[q]退出程序-quit
"
    menu_uos="[1]解决微信卡顿,二维码显示不全问题"
    input "[1]查看适合当前系统的功能(默认)
[2]查看所有功能
[w]获取作者微信ID
[q]退出程序
输入菜单序号并回车:" menu_type
    if [[ $os_type == 'uos' ]];then
        menus=$menu_uos
    else
        menus=$menu_kylin
    fi
    case $menu_type in
        2)
            menus=$menu_all
        ;;
        'w')
            red_z_green_z "微信ID:" 'liu1666867051'
        ;;
        'q')
            exit 0
        ;;
    esac
    for i in $menus;do
        green_zt $i
    done
    read sec
    if [[ -z $sec ]];then
        red_z_green_z "未选择任何菜单" "请重新选择"
        main
    else
        case $sec in
            'q')
                exit 0
            ;;
            'm')
                main
            ;;
        esac

    fi

    if [[ $sec -le 4 ]];then
        menu_${sec}_auto
    else
        red_z_green_z "选择错误" "请重新选择"
        main
    fi
}

net_check(){
    Entering '网络检测'
    ping 114.114.114.114 -c 3 > /dev/null
    if [[ $? == '0' ]];then
        ping baidu.com -c 3 > /dev/null
        if [[ $? == '0' ]];then
            green_zt '网络连接正常'
        else
            red_z_bg "检测结果" "DNS解析错误"
            return 2
        fi
    else
        red_zt_bg "检测结果" "无法连接外网"
        return 1
    fi 
}

cmd(){
    if [[ $UID == 0 ]];then
        $1
    else
        echo $passwd | sudo -S $1
    fi
}

check_status(){
    if [[ $? == 0 ]];then
        red_z_green_z "$1" "成功"
    else
        red_zt_bg "$1" "失败"
    fi
}



menu_1_auto_re(){
    echo "${passwd}" | sudo -S sed -i  "s#Exec=.*#Exec=wechat %U --disable-gpu#" ${1}
    if [[ $? == "0" ]];then
        green_zt "已完成${2}文件修复"
    else
        red_z "貌似密码输入错误,请重新输入"
        menu_1_auto_re
    fi
}
menu_1_auto(){
    green_zt "实现功能：解决微信卡顿、微信二维码显示不全
问题反馈方式
微信添加: liu1666867051
当前脚本手动操作文档链接：https://note.youdao.com/s/Cbnw06RP"
    if [[ "$os_type" == 'kylin' ]];then
        desktops="/home/${USER}/桌面/"
    elif [[ "$os_type"  == 'uos' ]];then
        desktops="/home/${USER}/Desktop/"
    else
        wechat1="/home/${USER}/桌面/"
    fi
    weixin_ico=`ls $desktops | grep weixin.desktop`
    if [[ -z $weixin_ico ]];then
        weixin_ico=`ls $desktops | grep wechat.desktop`
        if [[ -z $weixin_ico ]];then
            red_bg "没有在桌面找到微信图标"
        fi
    fi
    if [[ -f $weixin_ico ]];then
        menu_1_auto_re "${weixin_ico}" "桌面"
    fi
    wechat2="/usr/share/applications/wechat.desktop"
    if [[ -f $wechat2 ]];then
        menu_1_auto_re "${wechat2}" "源"
    else
        red_z "貌似木有安装微信呢"
    fi
    red_z "按回车终止此程序"
    read d
    exit 0
}
menu_2_auto(){
    green_zt '
------------------------------
#功能：解决系统卡顿          --
#作者：梯度科技-刘某         --
#目的：带来更好交互          --
#时间: 2021-8-5             --
------------------------------
    '
    if [[ `uname -m` == 'mips64' ]];then
        green_zt "当前为龙芯设备"
    else
        red_z '当前设备非龙芯设备,可能无法解决'
    fi
    # status=`gsettings get org.mate.session.required-components  windowmanager | sed "s#'##g"`
    # echo $status
    gsettings reset org.mate.session.required-components    windowmanager
    if [[ $? == '0' ]];then
        green_zt "修复成功,请执行下面的操作:"
        green_zt "打开控制面板->显示->高级->选择：兼容模式"
        green_zt "设置完成之后请重启电脑,按回车终止此程序"
        read d
    fi
}
update_os(){
    cmd "apt upgrade -y --fix-missing"
    if [[ $? == '0' ]];then
        green_zt "系统更新完成,请重启电脑使其生效"
        return 0
    else
        if [[ $n == 4 ]];then
            sudo dpkg --configure -a
            red_bg "系统更新失败,请检查网络,如果网络没问题请联系作者"
        else
            update_os
        fi
    fi
}
menu_3_auto(){
    green_zt '
-------------------------------
功能: 系统更新                
作者: 梯度科技-刘某           
目的: 带来更好的系统更新交互   
时间: 2021-8-5               
------------------------------'
    net_check
    if [[ $? == '0' ]];then
        cmd "apt update"
        if [[ $? == '0' ]];then
            for((n=1;n<=5;n++));do
                update_os
                if [[ $? == 0 ]];then
                    input "按回车终止当前程序"
                    exit 0
                fi
            done
        else
            echo "系统更新失败,请检查网络,如果网络没问题请联系作者"
        fi
    fi
}
menu_4_auto(){
    Entering "字体安装"
    if [[ ${os_type} == 'uos' ]];then
        red_z "请直接双击字体文件即可"
    else
        input "请输入字体文件/文件夹路径或者直接将字体文件/所在文件夹拖至此窗口，然后回车\n例如: /home/gxxc/GB2312.ttf" ttf
        ttf=`echo $ttf | sed "s#'##g"`
        red_z_green_z "输入内容---->:" ${ttf}
        if [[ -z $ttf ]];then
            red_z "未检测到文件信息"
        else
            if [[ -d $ttf ]];then
                red_z_green_z "当前输入类型：" "文件夹"
                pushd $ttf
                file_list=`ls *.ttf`
                if [[ -z $file_list ]];then
                    file_list=`ls *.TTF`
                fi
                if [[ -n ${file_list} ]];then
                    green_zt "已检测到字体文件,正在安装..."
                    for i in $file_list;do
                        red_z_green_z "正在安装: " "$i"
                        cmd "cp -rf ./$i /usr/share/fonts/"
                        check_status "字体安装: [ $i ]"
                    done
                    red_z_green_z "安装完成" "请重启电脑使其生效"
                    pushd "${work_dir}"
                else
                    red_zt_bg "文件夹内未检测到字体文件: " "$ttf"
                fi
            elif [[ -f $ttf ]];then
                red_z_green_z "当前输入类型：" "文件"
                file=`echo $ttf | grep *.ttf`
                if [[ -z $file ]];then
                    file=file=`echo $ttf | grep *.TTF`
                fi
                if [[ -n $file ]];then
                    cmd "chmod -R 777 $ttf"
                    cmd "cp $ttf /usr/share/fonts/"
                    if [[ $? == '0' ]];then
                        red_z_green_z "安装完成" "请重启电脑使其生效"
                    else
                        red_zt_bg "安装失败" "请检查密码"
                    fi
                else
                    red_bg "当前文件类型非字体文件"
                fi
            else
                red_bg "未找到该文件/文件夹"
            fi
        fi
    fi
}
main